﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdbool.h>
//求丑数

//int isugly(int n) {
//    if (n <= 0)
//        return 0;
//    while (n % 2 == 0 || n % 3 == 0 || n % 5 == 0)
//    {
//        if (n % 2 == 0)
//            n /= 2;
//        else if (n % 3 == 0)
//            n /= 3;
//        else
//            n /= 5;
//    }
//    /*int arr[] = { 2,3,5 };
//    if (n <= 0)
//    return 0;
//    int i;
//    for (i = 0; i < 3; i++)
//    {
//        while (n % arr[i] == 0)
//            n /= arr[i];
//    }
//    return 1 == n;*/
//}
//int main()
//{
//    int a,b;
//    scanf("%d", &a);
//    printf("%d", b = isugly(a));
//    return 0;
//}
//

//bool detectCapitalUse(char* word) {
//    if (*word == '\0')
//        return false;
//    if (*word >= 'A' && *word <= 'Z')
//    {
//        word++;
//        if (*word == '\0')
//            return true;
//        if (*word <= 'z' && *word >= 'a')
//        {
//            while ((*word >= 'a' && *word <= 'z') && *word != '\0')
//                word++;
//            if (*word == '\0')
//                return true;
//            return false;
//        }
//        if (*word <= 'Z' && *word >= 'A')
//        {
//            while ((*word >= 'A' && *word <= 'Z') && *word != '\0')
//                word++;
//            if (*word == '\0')
//                return true;
//            return false;
//        }
//    }
//    if (*word >= 'a' && *word <= 'z')
//    {
//        while ((*word >= 'a' && *word <= 'z') && *word != '\0')
//            word++;
//        if (*word == '\0')
//            return true;
//        return false;
//    }
//    return false;
//}
//int main()
//{
//    char ch[] = "USA";
//    int b=detectCapitalUse(ch);
//    return 0;
//}

//int comFun(int* a, int* b)
//{
//    return (*a - *b);
//}
//
//int majorityElement(int* nums, int numsSize) {
//    /*if (numsSize == 1)
//        return nums[0];
//    qsort(nums, numsSize, sizeof(int), comFun);
//    int count = 1;
//    for (int i = 0; i < numsSize - 1; i++)
//    {
//        if (nums[i + 1] == nums[i])
//        {
//            count++;
//            if (count > numsSize / 2)
//            {
//                return nums[i];
//            }
//        }
//        else
//        {
//            count = 1;
//        }
//    }
//    return NULL;*/
//    qsort(nums, numsSize, sizeof(int), sort);
//    return nums[numsSize / 2];//因为该数是在数组中出现次数大于n/2的元素，所以不管它从那开始，
//    //只要按顺序排序，下标为n/2的元素一定是该数组的多数元素
//}

//char* toLowerCase(char* s) {
//    char* p1 = s;
//    while (*p1 != '\0')
//    {
//        if (*p1 >= 'A' && *p1 <= 'Z')
//        {
//            *p1 += 32;
//        }
//        p1++;
//    }
//    return s;
//}
//int main()
//{
//    char a[] = "ABCDE";
//    char* a1 = toLowerCase(a);
//    printf("%s", a1);
//    return 0;
//}

//没看懂

//给定一个非空且只包含非负数的整数数组 nums，数组的 度 的定义是指数组里任一元素出现频数的最大值。
//
//你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组，返回其长度。
//
//int findShortestSubArray(int* nums, int numsSize) {
//    int i, k, target = 50000, max = 0;
//    int j = 0;
//    //max代表度，target代表最短连续数组长度
//    int star, finish;
//    int* count = (int*)malloc(sizeof(int) * 50000);//生成一个记录数字出现次数的数组
//    int* subscript = (int*)malloc(sizeof(int) * 50000);//生成一个记录度相同时不同的数值的数组
//    memset(count, 0, sizeof(int) * 50000);//初始化
//    //统计数字出现次数
//    for (i = 0; i < numsSize; i++) {
//        count[nums[i]]++;
//    }
//    //求度最大
//    for (i = 0; i <= 49999; i++)
//    {
//        if (count[i] >= max)
//        {
//            max = count[i];
//        }
//    }
//    //求最大度对应的值
//    for (i = 0; i <= 49999; i++) {
//        if (count[i] == max)
//        {
//            subscript[j++] = i;
//        }
//    }
//    //求最短连续子数组
//    for (i = 0; i < j; i++)
//    {
//        for (k = 0; k < numsSize; k++)
//        {
//            if (subscript[i] == nums[k])
//            {
//                star = k; break;
//            }
//        }
//        for (k = numsSize - 1; k >= 0; k--)
//        {
//            if (subscript[i] == nums[k])
//            {
//                finish = k; break;
//            }
//        }
//        if (finish - star + 1 < target)
//        {
//            target = finish - star + 1;
//        }
//    }
//    return target;
//}

//给你一个排序后的字符列表 letters ，列表中只包含小写英文字母。另给出一个目标字母 target，请你寻找在这一有序列表里比目标字母大的最小字母。
//如果目标字母 target = 'z' 并且字符列表为 letters = ['a', 'b']，则答案返回 'a'

//char nextGreatestLetter(char* letters, int lettersSize, char target) {
//	int i;
//	if (letters[0] > letters[lettersSize-1])
//	{
//		for (i = 0; i < lettersSize - 1; i++)
//		{
//			if (letters[i] > target && letters[i + 1] <= target)
//				return letters[i];
//		}
//		return letters[0];
//	}
//	else if (letters[0] < letters[lettersSize - 1])
//	{
//		for (i = 0; i < lettersSize - 1; i++)
//		{
//			if (letters[i] <= target && letters[i + 1] > target)
//				return letters[i+1];
//		}
//		return letters[0];
//	}
//	else
//	{
//		return letters[0];
//	}
//}

//给你一个整数数组 nums，将 nums 中的的所有偶数元素移动到数组的前面，后跟所有奇数元素。
//返回满足此条件的 任一数组 作为答案。

//int* sortArrayByParity(int* nums, int numsSize, int* returnSize) {
//	int a, i, j=0;
//	for (i = 0; i < numsSize; i++)
//	{
//		if (nums[i] % 2 == 0)
//		{
//			a = nums[j];
//			nums[j] = nums[i];
//			nums[i] = a;
//			j++;
//		}
//	}
//	*returnSize = numsSize;
//	return nums;
//}

//给你一个整数数组 nums ，其中总是存在 唯一的 一个最大整数 。
//请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是，则返回 最大元素的下标 ，否则返回 - 1 。

int comFun(int* a, int* b)
{
    return (*a - *b);
}
int search(int* nums, int numsSize,int x)
{
	int i;
	for (i = 0; i < numsSize; i++)
	{
		if (nums[i] == x)
		{
			return i;
		}
	}
}
int dominantIndex(int* nums, int numsSize) 
{
	int* nums1 = (int*)malloc(sizeof(int) * numsSize);
	for (i = 0; i < numsSize; i++)
	{
		nums1[i] = nums[i];
	}
	qsort(nums1, numsSize, sizeof(int), comFun);
	if (nums1[0]>nums1[numsSize-1])
	{
		if (nums1[0] >= 2 * nums1[1])
			return search(nums, numsSize, nums1[0]);
	}
	else if(nums1[0] < nums1[numsSize - 1])
	{
		if (nums[numsSize - 1] > 2 * nums[nusSize - 2])
			return search(nums, numsSize, nums1[numsSize - 1]);
	}
	else
	{
		return -1;
	}
	return -1;
}
int main()
{
	int arr[] = { 23,12,445,6,43,6,45,3,23,2 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int a = dominantIndex(arr,);
	return 0;
}
